#include "mainwindow.h"
#include "ui_mainwindow.h"
#include <QRegularExpression>
#include <QDateTime>
#include <QMessageBox>
#include <QJsonDocument>
#include <QJsonObject>
#include <QValueAxis>
#include <csignal>  // 添加这个头文件
#include <QNetworkInterface>  // 网络接口相关
#include <QHostAddress>       // IP地址处理
#include <QDebug>

void MainWindow::handleCommand300(const QMap<QString, QString> &params, QTcpSocket *client)
{
    // 格式: <ID=300><CamID=25078><INI=1><COOLING=1><COOL_TEM=-65>
    if (!params.contains("CamID") || !params.contains("COOLING") || !params.contains("COOL_TEM")) {
        sendResponse("<ID=300><INFO=Error><MSG=Missing_parameters>", client);
        return;
    }

    QString camId = params["CamID"];
    int cooling = params["COOLING"].toInt();
    double targetTemp = params["COOL_TEM"].toDouble();

    // 1. 先返回确认响应
    sendResponse("<ID=300><INFO=OK>", client);

    // 2. 发送温控指令
    QString tempCmd = QString("temp_set:%1").arg(targetTemp);
    sendCommandToMCU(tempCmd);

    // 3. 异步等待温度稳定后返回最终响应
    QTimer::singleShot(1000, [this, client, camId]() {
        QString response = QString("<ID=300><CamID=%1><INFO=OK><ACTION=DONE><INI=1><CUR_TEM=%2><SENDTIME=%3>")
        .arg(camId)
            .arg(hwStatus.currentTemp, 0, 'f', 2)  // 使用CCD1-CCD4的平均温度
            .arg(QDateTime::currentDateTime().toString("yyyyMMddhhmmss"));
        sendResponse(response, client);
    });
}